gsk: Drop gsk_render_node_make_immutable, nodes are always immutable
authorAlexander Larsson <alexl@redhat.com>
Wed, 21 Dec 2016 10:00:18 +0000 (11:00 +0100)
committerAlexander Larsson <alexl@redhat.com>
Wed, 21 Dec 2016 13:01:34 +0000 (14:01 +0100)
gsk/gskrenderer.c
gsk/gskrendernode.c
gsk/gskrendernodeimpl.c
gsk/gskrendernodeprivate.h

index 5c22d1b31c6492a6f68106cc35cc8a01321071a0..b50ebd7f565b0fd2fe1ae8515a094b8e245f4db9 100644 (file)
@@ -616,7 +616,7 @@ gsk_renderer_unrealize (GskRenderer *renderer)
  * using the given #GdkDrawingContext.
  *
  * The @renderer will acquire a reference on the #GskRenderNode tree while
- * the rendering is in progress, and will make the tree immutable.
+ * the rendering is in progress.
  *
  * Since: 3.90
  */
@@ -635,7 +635,6 @@ gsk_renderer_render (GskRenderer       *renderer,
   g_return_if_fail (context == priv->drawing_context);
 
   priv->root_node = gsk_render_node_ref (root);
-  gsk_render_node_make_immutable (priv->root_node);
 
 #ifdef G_ENABLE_DEBUG
   gsk_profiler_reset (priv->profiler);
index 20d9bef0922288c1d0423ed0d9c6cb1393bb39c5..1cd01f4b639dd9587f388f2d7ebe21ce7d74371f 100644 (file)
@@ -35,8 +35,8 @@
  *
  * Render nodes are meant to be transient; once they have been associated
  * to a #GskRenderer it's safe to release any reference you have on them.
- * Once a #GskRenderNode has been rendered, it is marked as immutable, and
- * cannot be modified.
+ * All #GskRenderNodes are immutable, you can only specify their properties
+ * during construction.
  */
 
 #include "config.h"
@@ -68,8 +68,6 @@ G_DEFINE_BOXED_TYPE (GskRenderNode, gsk_render_node,
 static void
 gsk_render_node_finalize (GskRenderNode *self)
 {
-  self->is_mutable = TRUE;
-
   self->node_class->finalize (self);
 
   g_clear_pointer (&self->name, g_free);
@@ -100,8 +98,6 @@ gsk_render_node_new (const GskRenderNodeClass *node_class)
   self->min_filter = GSK_SCALING_FILTER_NEAREST;
   self->mag_filter = GSK_SCALING_FILTER_NEAREST;
 
-  self->is_mutable = TRUE;
-
   return self;
 }
 
@@ -237,23 +233,6 @@ gsk_render_node_get_name (GskRenderNode *node)
   return node->name;
 }
 
-/*< private >
- * gsk_render_node_make_immutable:
- * @node: a #GskRenderNode
- *
- * Marks @node, and all its children, as immutable.
- */
-void
-gsk_render_node_make_immutable (GskRenderNode *node)
-{
-  if (!node->is_mutable)
-    return;
-
-  node->node_class->make_immutable (node);
-
-  node->is_mutable = FALSE;
-}
-
 /**
  * gsk_render_node_draw:
  * @node: a #GskRenderNode
index 20ff9487ef91f6634dab4ab9ba7f74bb8f8c46de..53c14e95ffd8794075df8273daa5fe6771bf485b 100644 (file)
@@ -41,11 +41,6 @@ gsk_color_node_finalize (GskRenderNode *node)
 {
 }
 
-static void
-gsk_color_node_make_immutable (GskRenderNode *node)
-{
-}
-
 static void
 gsk_color_node_draw (GskRenderNode *node,
                      cairo_t       *cr)
@@ -74,7 +69,6 @@ static const GskRenderNodeClass GSK_COLOR_NODE_CLASS = {
   sizeof (GskColorNode),
   "GskColorNode",
   gsk_color_node_finalize,
-  gsk_color_node_make_immutable,
   gsk_color_node_draw,
   gsk_color_node_get_bounds
 };
@@ -141,11 +135,6 @@ gsk_linear_gradient_node_finalize (GskRenderNode *node)
   g_free (self->stops);
 }
 
-static void
-gsk_linear_gradient_node_make_immutable (GskRenderNode *node)
-{
-}
-
 static void
 gsk_linear_gradient_node_draw (GskRenderNode *node,
                                cairo_t       *cr)
@@ -193,7 +182,6 @@ static const GskRenderNodeClass GSK_LINEAR_GRADIENT_NODE_CLASS = {
   sizeof (GskLinearGradientNode),
   "GskLinearGradientNode",
   gsk_linear_gradient_node_finalize,
-  gsk_linear_gradient_node_make_immutable,
   gsk_linear_gradient_node_draw,
   gsk_linear_gradient_node_get_bounds
 };
@@ -203,7 +191,6 @@ static const GskRenderNodeClass GSK_REPEATING_LINEAR_GRADIENT_NODE_CLASS = {
   sizeof (GskLinearGradientNode),
   "GskLinearGradientNode",
   gsk_linear_gradient_node_finalize,
-  gsk_linear_gradient_node_make_immutable,
   gsk_linear_gradient_node_draw,
   gsk_linear_gradient_node_get_bounds
 };
@@ -290,11 +277,6 @@ gsk_border_node_finalize (GskRenderNode *node)
 {
 }
 
-static void
-gsk_border_node_make_immutable (GskRenderNode *node)
-{
-}
-
 static void
 gsk_border_node_draw (GskRenderNode *node,
                        cairo_t       *cr)
@@ -392,7 +374,6 @@ static const GskRenderNodeClass GSK_BORDER_NODE_CLASS = {
   sizeof (GskBorderNode),
   "GskBorderNode",
   gsk_border_node_finalize,
-  gsk_border_node_make_immutable,
   gsk_border_node_draw,
   gsk_border_node_get_bounds
 };
@@ -478,11 +459,6 @@ gsk_texture_node_finalize (GskRenderNode *node)
   gsk_texture_unref (self->texture);
 }
 
-static void
-gsk_texture_node_make_immutable (GskRenderNode *node)
-{
-}
-
 static void
 gsk_texture_node_draw (GskRenderNode *node,
                        cairo_t       *cr)
@@ -521,7 +497,6 @@ static const GskRenderNodeClass GSK_TEXTURE_NODE_CLASS = {
   sizeof (GskTextureNode),
   "GskTextureNode",
   gsk_texture_node_finalize,
-  gsk_texture_node_make_immutable,
   gsk_texture_node_draw,
   gsk_texture_node_get_bounds
 };
@@ -586,11 +561,6 @@ gsk_inset_shadow_node_finalize (GskRenderNode *node)
 {
 }
 
-static void
-gsk_inset_shadow_node_make_immutable (GskRenderNode *node)
-{
-}
-
 static gboolean
 has_empty_clip (cairo_t *cr)
 {
@@ -988,7 +958,6 @@ static const GskRenderNodeClass GSK_INSET_SHADOW_NODE_CLASS = {
   sizeof (GskInsetShadowNode),
   "GskInsetShadowNode",
   gsk_inset_shadow_node_finalize,
-  gsk_inset_shadow_node_make_immutable,
   gsk_inset_shadow_node_draw,
   gsk_inset_shadow_node_get_bounds
 };
@@ -1055,11 +1024,6 @@ gsk_outset_shadow_node_finalize (GskRenderNode *node)
 {
 }
 
-static void
-gsk_outset_shadow_node_make_immutable (GskRenderNode *node)
-{
-}
-
 static void
 gsk_outset_shadow_get_extents (GskOutsetShadowNode *self,
                                float               *top,
@@ -1202,7 +1166,6 @@ static const GskRenderNodeClass GSK_OUTSET_SHADOW_NODE_CLASS = {
   sizeof (GskOutsetShadowNode),
   "GskOutsetShadowNode",
   gsk_outset_shadow_node_finalize,
-  gsk_outset_shadow_node_make_immutable,
   gsk_outset_shadow_node_draw,
   gsk_outset_shadow_node_get_bounds
 };
@@ -1269,11 +1232,6 @@ gsk_cairo_node_finalize (GskRenderNode *node)
     cairo_surface_destroy (self->surface);
 }
 
-static void
-gsk_cairo_node_make_immutable (GskRenderNode *node)
-{
-}
-
 static void
 gsk_cairo_node_draw (GskRenderNode *node,
                      cairo_t       *cr)
@@ -1301,7 +1259,6 @@ static const GskRenderNodeClass GSK_CAIRO_NODE_CLASS = {
   sizeof (GskCairoNode),
   "GskCairoNode",
   gsk_cairo_node_finalize,
-  gsk_cairo_node_make_immutable,
   gsk_cairo_node_draw,
   gsk_cairo_node_get_bounds
 };
@@ -1374,7 +1331,6 @@ gsk_cairo_node_get_draw_context (GskRenderNode *node,
   cairo_t *res;
 
   g_return_val_if_fail (GSK_IS_RENDER_NODE_TYPE (node, GSK_CAIRO_NODE), NULL);
-  g_return_val_if_fail (node->is_mutable, NULL);
   g_return_val_if_fail (renderer == NULL || GSK_IS_RENDERER (renderer), NULL);
 
   width = ceilf (self->bounds.size.width);
@@ -1459,18 +1415,6 @@ gsk_container_node_finalize (GskRenderNode *node)
   g_free (container->children);
 }
 
-static void
-gsk_container_node_make_immutable (GskRenderNode *node)
-{
-  GskContainerNode *container = (GskContainerNode *) node;
-  guint i;
-
-  for (i = 1; i < container->n_children; i++)
-    {
-      gsk_render_node_make_immutable (container->children[i]);
-    }
-}
-
 static void
 gsk_container_node_draw (GskRenderNode *node,
                          cairo_t       *cr)
@@ -1513,7 +1457,6 @@ static const GskRenderNodeClass GSK_CONTAINER_NODE_CLASS = {
   sizeof (GskContainerNode),
   "GskContainerNode",
   gsk_container_node_finalize,
-  gsk_container_node_make_immutable,
   gsk_container_node_draw,
   gsk_container_node_get_bounds
 };
@@ -1600,14 +1543,6 @@ gsk_transform_node_finalize (GskRenderNode *node)
   gsk_render_node_unref (self->child);
 }
 
-static void
-gsk_transform_node_make_immutable (GskRenderNode *node)
-{
-  GskTransformNode *self = (GskTransformNode *) node;
-
-  gsk_render_node_make_immutable (self->child);
-}
-
 static void
 gsk_transform_node_draw (GskRenderNode *node,
                          cairo_t       *cr)
@@ -1656,7 +1591,6 @@ static const GskRenderNodeClass GSK_TRANSFORM_NODE_CLASS = {
   sizeof (GskTransformNode),
   "GskTransformNode",
   gsk_transform_node_finalize,
-  gsk_transform_node_make_immutable,
   gsk_transform_node_draw,
   gsk_transform_node_get_bounds
 };
@@ -1739,14 +1673,6 @@ gsk_opacity_node_finalize (GskRenderNode *node)
   gsk_render_node_unref (self->child);
 }
 
-static void
-gsk_opacity_node_make_immutable (GskRenderNode *node)
-{
-  GskOpacityNode *self = (GskOpacityNode *) node;
-
-  gsk_render_node_make_immutable (self->child);
-}
-
 static void
 gsk_opacity_node_draw (GskRenderNode *node,
                        cairo_t       *cr)
@@ -1785,7 +1711,6 @@ static const GskRenderNodeClass GSK_OPACITY_NODE_CLASS = {
   sizeof (GskOpacityNode),
   "GskOpacityNode",
   gsk_opacity_node_finalize,
-  gsk_opacity_node_make_immutable,
   gsk_opacity_node_draw,
   gsk_opacity_node_get_bounds
 };
@@ -1866,14 +1791,6 @@ gsk_clip_node_finalize (GskRenderNode *node)
   gsk_render_node_unref (self->child);
 }
 
-static void
-gsk_clip_node_make_immutable (GskRenderNode *node)
-{
-  GskClipNode *self = (GskClipNode *) node;
-
-  gsk_render_node_make_immutable (self->child);
-}
-
 static void
 gsk_clip_node_draw (GskRenderNode *node,
                     cairo_t       *cr)
@@ -1909,7 +1826,6 @@ static const GskRenderNodeClass GSK_CLIP_NODE_CLASS = {
   sizeof (GskClipNode),
   "GskClipNode",
   gsk_clip_node_finalize,
-  gsk_clip_node_make_immutable,
   gsk_clip_node_draw,
   gsk_clip_node_get_bounds
 };
@@ -1991,14 +1907,6 @@ gsk_rounded_clip_node_finalize (GskRenderNode *node)
   gsk_render_node_unref (self->child);
 }
 
-static void
-gsk_rounded_clip_node_make_immutable (GskRenderNode *node)
-{
-  GskRoundedClipNode *self = (GskRoundedClipNode *) node;
-
-  gsk_render_node_make_immutable (self->child);
-}
-
 static void
 gsk_rounded_clip_node_draw (GskRenderNode *node,
                             cairo_t       *cr)
@@ -2032,7 +1940,6 @@ static const GskRenderNodeClass GSK_ROUNDED_CLIP_NODE_CLASS = {
   sizeof (GskRoundedClipNode),
   "GskRoundedClipNode",
   gsk_rounded_clip_node_finalize,
-  gsk_rounded_clip_node_make_immutable,
   gsk_rounded_clip_node_draw,
   gsk_rounded_clip_node_get_bounds
 };
@@ -2118,14 +2025,6 @@ gsk_shadow_node_finalize (GskRenderNode *node)
   g_free (self->shadows);
 }
 
-static void
-gsk_shadow_node_make_immutable (GskRenderNode *node)
-{
-  GskShadowNode *self = (GskShadowNode *) node;
-
-  gsk_render_node_make_immutable (self->child);
-}
-
 static void
 gsk_shadow_node_draw (GskRenderNode *node,
                       cairo_t       *cr)
@@ -2193,7 +2092,6 @@ static const GskRenderNodeClass GSK_SHADOW_NODE_CLASS = {
   sizeof (GskShadowNode),
   "GskShadowNode",
   gsk_shadow_node_finalize,
-  gsk_shadow_node_make_immutable,
   gsk_shadow_node_draw,
   gsk_shadow_node_get_bounds
 };
@@ -2327,15 +2225,6 @@ gsk_blend_node_finalize (GskRenderNode *node)
   gsk_render_node_unref (self->top);
 }
 
-static void
-gsk_blend_node_make_immutable (GskRenderNode *node)
-{
-  GskBlendNode *self = (GskBlendNode *) node;
-
-  gsk_render_node_make_immutable (self->bottom);
-  gsk_render_node_make_immutable (self->top);
-}
-
 static void
 gsk_blend_node_draw (GskRenderNode *node,
                      cairo_t       *cr)
@@ -2374,7 +2263,6 @@ static const GskRenderNodeClass GSK_BLEND_NODE_CLASS = {
   sizeof (GskBlendNode),
   "GskBlendNode",
   gsk_blend_node_finalize,
-  gsk_blend_node_make_immutable,
   gsk_blend_node_draw,
   gsk_blend_node_get_bounds
 };
@@ -2463,15 +2351,6 @@ gsk_cross_fade_node_finalize (GskRenderNode *node)
   gsk_render_node_unref (self->end);
 }
 
-static void
-gsk_cross_fade_node_make_immutable (GskRenderNode *node)
-{
-  GskCrossFadeNode *self = (GskCrossFadeNode *) node;
-
-  gsk_render_node_make_immutable (self->start);
-  gsk_render_node_make_immutable (self->end);
-}
-
 static void
 gsk_cross_fade_node_draw (GskRenderNode *node,
                           cairo_t       *cr)
@@ -2510,7 +2389,6 @@ static const GskRenderNodeClass GSK_CROSS_FADE_NODE_CLASS = {
   sizeof (GskCrossFadeNode),
   "GskCrossFadeNode",
   gsk_cross_fade_node_finalize,
-  gsk_cross_fade_node_make_immutable,
   gsk_cross_fade_node_draw,
   gsk_cross_fade_node_get_bounds
 };
index d56c85ce3be94abb9616b6a13d95fd4955fde569..0566f8a528f148334e3456a741e1b69ba559f02c 100644 (file)
@@ -22,9 +22,6 @@ struct _GskRenderNode
   /* Scaling filters */
   GskScalingFilter min_filter;
   GskScalingFilter mag_filter;
-
-  /* Bit fields; leave at the end */
-  gboolean is_mutable : 1;
 };
 
 struct _GskRenderNodeClass
@@ -33,7 +30,6 @@ struct _GskRenderNodeClass
   gsize struct_size;
   const char *type_name;
   void (* finalize) (GskRenderNode *node);
-  void (* make_immutable) (GskRenderNode *node);
   void (* draw) (GskRenderNode *node,
                  cairo_t       *cr);
   void (* get_bounds) (GskRenderNode   *node,
@@ -42,8 +38,6 @@ struct _GskRenderNodeClass
 
 GskRenderNode *gsk_render_node_new (const GskRenderNodeClass *node_class);
 
-void gsk_render_node_make_immutable (GskRenderNode *node);
-
 void gsk_render_node_get_bounds (GskRenderNode   *node,
                                  graphene_rect_t *frame);
 double gsk_opacity_node_get_opacity (GskRenderNode *node);